1. Field of the Invention
The invention generally concerns using a transmission protocol which has no real-time properties to distribute a live performance across a network; more particularly, the invention concerns distributing live performances on MIDI devices across the Internet using the well-known TCP/IP protocols.
2. Description of the Prior Art
The Musical Instrument Digital Interface (MIDI) is a standard protocol for controlling electronic musical instruments such as synthesizers or the sound cards of personal computers. One common use of the protocol is permitting a musician to play more than one electronic instrument at once. The instrument that the musician is actually playing not only generates sounds, but also generates a sequence of event messages. An event message may for example be a note on message, that indicates that a note of a given pitch has started to sound or a note off message that indicates that the note has ceased sounding. Many other kinds of event messages are defined as well. Another instrument receives the event messages from the first instrument and responds by performing the actions indicated in the messages. Thus, if the message is a note on message, the other instrument will begin sounding the note, and will "play along with" the first instrument. For purposes of the present discussion, the event messages can be divided into two classes: the note on and note off messages and the remaining messages, which will be termed herein control messages.
The sequence of MIDI protocols to which a musical instrument directly responds is termed herein a MIDI stream. Devices which respond to a MIDI stream are termed herein MIDI devices. MIDI devices include electronic musical instruments and the sound boards of many computers. In a MIDI stream, time relationships between events are simply determined by when the events appear in the event stream. For example, if a note is to be held for a period of one second, the note on message for the note will appear in the MIDI stream one second before the note off message for the note appears in the stream. Since the MIDI device will start sounding the note in response to the note on message and stop sounding the note in response to the note off message, the note will be sounded for one second. It should be further noted at this point that the MIDI device may be assigned one or more channels. Each channel is represented by a channel number and each event message includes a channel number. A given MIDI device will respond to a given event message only if the channel number in the event message specifies one of the channels assigned to the MIDI device.
Each MIDI device has three connectors for the cables used to carry MIDI streams. One of the connectors is an output connector. The cable connected to it carries a MIDI stream of event messages that originate at the MIDI device; another of the connectors is an input connector; the connected cable carries a MIDI stream of event messages that the MIDI device will respond to if the event messages specify the channel currently assigned to the MIDI device. The third connector is a thru connector; the connected cable carries the MIDI stream received in the input connector.
The connectors and associated cables can be used to configure groups of MIDI devices. FIG. 5 shows one such configuration 501. Each MIDI device 113 has the three connectors: Input 505, output 507, and thru 509. Output 507(a) of MIDI device 113(a) is connected by MIDI cable 510 to input 505(b) of MIDI device 113(b), while thru connector 509(b) is connected to input 505(c) of MIDI device 113(c). As a consequence of these connections, the output of MIDI device 113(a) is played on both MIDI devices 113(b) and 113(c); additionally, notes produced by players of devices 113(b) and (c) will be heard from those devices.
In the MIDI stream, the interval of time between two event messages is simply the amount of time between when the first event message appears in the stream and when the second event message appears in the stream. For this reason, a MIDI stream cannot be stored in or transmitted via a medium which does not preserve the intervals between event messages. The problem of storing a MIDI stream was solved by a special MIDI device 113, MIDI sequencer 511. Sequencer 511 receives one or more MIDI streams 111 and makes MIDI tracks 105 out of the MIDI streams 111 and MIDI files 103 out of the MIDI tracks. The files and tracks are stored in storage devices such as standard memories and/or disk drives.
An important example of a transmission medium that does not preserve the intervals between event messages is the Internet. That is the reason why music produced by MIDI devices has been distributed over the Internet as MIDI files. The techniques used to distribute MIDI files over the Internet are described in the Description of the Prior Art of the parent of the present patent application. As shown in FIG. 1 of the present application, music produced by MIDI devices was distributed over the Internet in the prior art by making a MIDI file 103 from the MIDI stream, distributing the MIDI file over the Internet, and using the arrangement shown at 101 of FIG. 1 to play the file on a MIDI device 113. MIDI file 103 has a header 104 which contains information such as the number of tracks. The MIDI file also contains at least one track 105. A given track i in such a file is indicated hereinafter by 105(i). Each track 105(i) contains a sequence of events 106. Each event 106(j) has two parts: an event message 117 and an elapsed time descriptor 119. The elapsed time descriptor indicates the time that is to elapse between the preceding event 106(j-l) and event 106(j). As can be seen from the foregoing, a given event 106's position in file 103 may be indicated by the index of its track and its own index in the track. Event 106(i,j) is thus event j in track i.
The MIDI stream 111 is generated from MIDI file 103 by MIDI controller 107. Prior-art MIDI controller 107 does this by first writing all of the tracks 105 from file 103 into controller memory 109, as shown by arrow 108, and then reading all of the tracks simultaneously in the fashion just described, as shown by arrow 110. To accomplish the simultaneous reading, MIDI controller 107 maintains a song position time value 121 which the controller can use together with the elapsed time descriptors to determine which event messages are to be output from the tracks at a given time. As would be expected from this procedure, and as shown in FIG. 1, MIDI stream 111 generally consists of interleaved event messages 117 from the tracks 105. MIDI stream 111 may then be responded to by any MIDI device 113, which then drives loudspeaker 115 to produce the sounds specified by MIDI stream 111. The standards for both MIDI streams and MIDI files are defined in the MIDI Specification, copyright 1983 and available from the MIDI Manufacturers' Association.
One large problem with the arrangement of FIG. 1 is that it cannot take a MIDI track as it is being produced from a MIDI stream and make the MIDI track available to users of the Internet. Consequently, the arrangement of FIG. 1 cannot be used to distribute a live concert via the Internet or generally to provide a continuous stream of music via the Internet, or to provide real-time collaboration among musicians via the Internet. It is an object of the invention described herein to solve these problems, as well as other problems that arise when it becomes possible to provide a MIDI track to the Internet as it is produced.